package com.tim.framework.util;

import java.io.File;
import java.io.IOException;

/**
 * 文件工具类.
 * 
 * @author Tim.
 */
public class FileUtil {
	/**
	 * 获取文件类型. 例如：D:\test\dataTest.xml则返回xml
	 */
	public static String getFileType(File file) {
		return getFileType(file.getName());
	}

	/**
	 * 获取文件类型. 例如：D:\test\dataTest.xml则返回xml
	 */
	public static String getFileType(String content) {
		return content.substring(content.lastIndexOf(".") + 1);
	}

	/**
	 * 获取文件名. 例如：D:\test\dataTest.xml则返回dataTest
	 */
	public static String getFileName(File file) {
		return getFileName(file.getName());
	}

	/**
	 * 获取文件名. 例如：D:\test\dataTest.xml则返回dataTest
	 */
	public static String getFileName(String content) {
		int index = 0;
		if (content.lastIndexOf("\\") != -1)
			index = content.lastIndexOf("\\") + 1;
		if (content.lastIndexOf("/") != -1)
			index = content.lastIndexOf("/") + 1;
		return content.substring(index, content.lastIndexOf("."));
	}

	/**
	 * 获取文件所在目录. 例如：D:\test\dataTest.xml则返回D:\test
	 */
	public static String getFilePath(String content) {
		return new File(content).getParent();
	}

	/**
	 * 获取与输入文件同名的指定后缀的文件.
	 * 
	 * @param inputFile
	 *            输入文件.
	 * @param postfix
	 *            文件后缀名.
	 */
	public static File getFile(File inputFile, String postfix) {
		StringBuilder absPath = new StringBuilder(inputFile.getParent());
		absPath.append(File.separator);
		absPath.append(getFileName(inputFile));
		if (!postfix.startsWith("."))
			absPath.append(".");
		absPath.append(postfix);
		return new File(absPath.toString());
	}

	/**
	 * 获取与输入文件路径同名的指定后缀的文件.
	 * 
	 * @param absFilePath
	 *            输入文件路径.
	 * @param postfix
	 *            文件后缀名.
	 */
	public static File getFile(String absFilePath, String postfix) {
		return getFile(new File(absFilePath), postfix);
	}

	/**
	 * 以指定路径创建新文件.当父目录不存在时,自动创建父目录.
	 * 
	 * @param path
	 *            文件路径.
	 */
	public static File createNewFile(String path) {
		File file = new File(path);
		File parentFile = file.getParentFile();
		if (parentFile != null) {
			parentFile.mkdirs();
		}
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return file;
	}

	/**
	 * 创建新文件.当父目录不存在时,自动创建父目录.
	 * 
	 * @param file
	 *            文件.
	 */
	public static File createNewFile(File file) {
		File parentFile = file.getParentFile();
		if (parentFile != null) {
			parentFile.mkdirs();
		}
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return file;
	}
}
